summaryrefslogtreecommitdiff
path: root/apps/web/src/app/editor/[project_id]
diff options
context:
space:
mode:
authorKhắc Tuấn <khtuankendy@gmail.com>2025-07-16 20:04:27 +0700
committerGitHub <noreply@github.com>2025-07-16 20:04:27 +0700
commit2974fd89a942f4e3173642b165f228e2af604ae7 (patch)
tree179811835f69429d6fc4b7917c8ece2615a74a3b /apps/web/src/app/editor/[project_id]
parentfaf317cd20756b72974b67aaacab1ccf49ec8a86 (diff)
parent0554a031c2d8cc8d736172aeaf503d33b0764c04 (diff)
downloadopencut-2974fd89a942f4e3173642b165f228e2af604ae7.tar.gz
Merge branch 'main' into feature/optimize-timeline-ruler
Diffstat (limited to 'apps/web/src/app/editor/[project_id]')
-rw-r--r--apps/web/src/app/editor/[project_id]/page.tsx39
1 files changed, 26 insertions, 13 deletions
diff --git a/apps/web/src/app/editor/[project_id]/page.tsx b/apps/web/src/app/editor/[project_id]/page.tsx
index f48d032a..d9d8a08c 100644
--- a/apps/web/src/app/editor/[project_id]/page.tsx
+++ b/apps/web/src/app/editor/[project_id]/page.tsx
@@ -1,7 +1,7 @@
"use client";
-import { useEffect } from "react";
-import { useParams } from "next/navigation";
+import { useEffect, useRef } from "react";
+import { useParams, useRouter } from "next/navigation";
import {
ResizablePanelGroup,
ResizablePanel,
@@ -34,26 +34,39 @@ export default function Editor() {
const { activeProject, loadProject, createNewProject } = useProjectStore();
const params = useParams();
+ const router = useRouter();
const projectId = params.project_id as string;
+ const handledProjectIds = useRef<Set<string>>(new Set());
useDisableBrowserZoom();
usePlaybackControls();
useEffect(() => {
- const initializeProject = async () => {
- if (projectId && (!activeProject || activeProject.id !== projectId)) {
- try {
- await loadProject(projectId);
- } catch (error) {
- console.error("Failed to load project:", error);
- // If project doesn't exist, create a new one
- await createNewProject("Untitled Project");
- }
+ const initProject = async () => {
+
+ if (!projectId) return;
+
+ if (activeProject?.id === projectId) {
+ return;
+ }
+
+ if (handledProjectIds.current.has(projectId)) {
+ return;
+ }
+
+ try {
+ await loadProject(projectId);
+ } catch (error) {
+ handledProjectIds.current.add(projectId);
+
+ const newProjectId = await createNewProject("Untitled Project");
+ router.replace(`/editor/${newProjectId}`);
+ return;
}
};
- initializeProject();
- }, [projectId, activeProject, loadProject, createNewProject]);
+ initProject();
+ }, [projectId, activeProject?.id, loadProject, createNewProject, router]);
return (
<EditorProvider>